<?php
/**
 * crcl/base
 *
 * Copyright 2013 CRCL - André Sabosch - info@crcl.de
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

namespace crcl\base\template;

interface ICache
{
  public static function fromTemplate($sTemplate);

  public function set($sContent);
  public function get();

  public function getFile();
}

class Cache implements ICache
{
  public static function fromTemplate($sTemplate)
  {
    $oCache = new Cache($sTemplate);
    return $oCache;
  }

  public function get()
  {
    $sKey = $this->generateKey();

    $oStorage = \crcl\base\Storage::file();
    return $oStorage->get($sKey);
  }

  public function getFile()
  {
    $sKey = $this->generateKey();
    $oStorage = \crcl\base\Storage::file();
    $sFile = $oStorage->getFile($sKey);
    return $sFile;
  }

  public function set($sContent)
  {
    $sKey = $this->generateKey();

    $oStorage = \crcl\base\Storage::file();
    $oStorage->set($sKey, $sContent);
  }

  /** PRIVATE *************************************************************************************/

  private function __construct($sTemplate)
  {
    $this->sTemplate = $sTemplate;
  }

  private function generateKey()
  {
    $sKey = 'template/cache/';
    $sKey .= $this->sTemplate;
    return $sKey;
  }
}